home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
turbcomm.arc
/
GETVIDLN.INC
< prev
next >
Wrap
Text File
|
1989-06-30
|
2KB
|
52 lines
Var
VideoScreenWidth : Integer; { Is screen set to 80 or 132 column }
Function GetVidLine( LineNumber : Integer) : StringLong;
{ File: GETVIDLN.INC }
{ Given the screen line number, return the line from video memory }
Const
LATOFSBase = $0EF4;
VidMemSeg = $EE00;
null = 0;
Var
TempString : StringLong;
LATOFSOffset, CharOffset : Integer;
LineLen, ColCounter, LastCharPos : Integer;
Begin
TempString := '';
{ First get the line offset from the LATOFS table }
LATOFSOffset := LATOFSBase + (2 * (LineNumber - 1));
CharOffset := MemW[VidMemSeg:LATOFSOffset];
VideoScreenWidth := Mem[VidMemSeg:$0f26];
If (CharOffSet Xor $8000) > 0
Then Begin
{ It's a double width line }
CharOffset := CharOffset And $7FFF;
LineLen := VideoScreenWidth div 2;
End
Else LineLen := VideoScreenWidth;
For ColCounter := 1 to LineLen Do
Begin
If Mem[VidMemSeg:CharOffset] = null
Then TempString[ColCounter] := ' '
Else Begin
TempString[ColCounter] := Chr(Mem[VidMemSeg:CharOffset]);
If TempString[ColCounter] > ' '
Then LastCharPos := ColCounter;
End; { If there was a character }
CharOffset := CharOffset + 1;
End;
TempString[0] := Chr(LastCharPos);
{ Return with the final value }
GetVidLine := TempString;
End; { Function GetVidLine }